using System;
using System.Collections.Generic;
using System.Text;

using NHibernate.Data.Base;

namespace NHibernate.Data.Managers
{
    public interface IManagerFactory
    {
		// Get Methods
		IAwardManager GetAwardManager();
		IAwardManager GetAwardManager(INHibernateSession session);
		IBrandManager GetBrandManager();
		IBrandManager GetBrandManager(INHibernateSession session);
		ICorporationManager GetCorporationManager();
		ICorporationManager GetCorporationManager(INHibernateSession session);
		IDictionaryZhCNManager GetDictionaryZhCNManager();
		IDictionaryZhCNManager GetDictionaryZhCNManager(INHibernateSession session);
		IExpertManager GetExpertManager();
		IExpertManager GetExpertManager(INHibernateSession session);
		ILongDictionaryZhCNManager GetLongDictionaryZhCNManager();
		ILongDictionaryZhCNManager GetLongDictionaryZhCNManager(INHibernateSession session);
		IOriginCountryManager GetOriginCountryManager();
		IOriginCountryManager GetOriginCountryManager(INHibernateSession session);
		IPersonManager GetPersonManager();
		IPersonManager GetPersonManager(INHibernateSession session);
		IRegionManager GetRegionManager();
		IRegionManager GetRegionManager(INHibernateSession session);
		IReWineAwardManager GetReWineAwardManager();
		IReWineAwardManager GetReWineAwardManager(INHibernateSession session);
		IReWineColorManager GetReWineColorManager();
		IReWineColorManager GetReWineColorManager(INHibernateSession session);
		IReWineExpertManager GetReWineExpertManager();
		IReWineExpertManager GetReWineExpertManager(INHibernateSession session);
		IReWineFoodPairingManager GetReWineFoodPairingManager();
		IReWineFoodPairingManager GetReWineFoodPairingManager(INHibernateSession session);
		IReWineGrapeVarietyManager GetReWineGrapeVarietyManager();
		IReWineGrapeVarietyManager GetReWineGrapeVarietyManager(INHibernateSession session);
		IReWineIngredientManager GetReWineIngredientManager();
		IReWineIngredientManager GetReWineIngredientManager(INHibernateSession session);
		IReWineServingOcassionManager GetReWineServingOcassionManager();
		IReWineServingOcassionManager GetReWineServingOcassionManager(INHibernateSession session);
		IReWineSmellManager GetReWineSmellManager();
		IReWineSmellManager GetReWineSmellManager(INHibernateSession session);
		IReWineStyleManager GetReWineStyleManager();
		IReWineStyleManager GetReWineStyleManager(INHibernateSession session);
		IReWineTasteManager GetReWineTasteManager();
		IReWineTasteManager GetReWineTasteManager(INHibernateSession session);
		IWineManager GetWineManager();
		IWineManager GetWineManager(INHibernateSession session);
		IWineryManager GetWineryManager();
		IWineryManager GetWineryManager(INHibernateSession session);
    }

    public class ManagerFactory : IManagerFactory
    {
        #region Constructors

        public ManagerFactory()
        {
        }

        #endregion

        #region Get Methods

		public IAwardManager GetAwardManager()
        {
            return new AwardManager();
        }
		public IAwardManager GetAwardManager(INHibernateSession session)
        {
            return new AwardManager(session);
        }
		public IBrandManager GetBrandManager()
        {
            return new BrandManager();
        }
		public IBrandManager GetBrandManager(INHibernateSession session)
        {
            return new BrandManager(session);
        }
		public ICorporationManager GetCorporationManager()
        {
            return new CorporationManager();
        }
		public ICorporationManager GetCorporationManager(INHibernateSession session)
        {
            return new CorporationManager(session);
        }
		public IDictionaryZhCNManager GetDictionaryZhCNManager()
        {
            return new DictionaryZhCNManager();
        }
		public IDictionaryZhCNManager GetDictionaryZhCNManager(INHibernateSession session)
        {
            return new DictionaryZhCNManager(session);
        }
		public IExpertManager GetExpertManager()
        {
            return new ExpertManager();
        }
		public IExpertManager GetExpertManager(INHibernateSession session)
        {
            return new ExpertManager(session);
        }
		public ILongDictionaryZhCNManager GetLongDictionaryZhCNManager()
        {
            return new LongDictionaryZhCNManager();
        }
		public ILongDictionaryZhCNManager GetLongDictionaryZhCNManager(INHibernateSession session)
        {
            return new LongDictionaryZhCNManager(session);
        }
		public IOriginCountryManager GetOriginCountryManager()
        {
            return new OriginCountryManager();
        }
		public IOriginCountryManager GetOriginCountryManager(INHibernateSession session)
        {
            return new OriginCountryManager(session);
        }
		public IPersonManager GetPersonManager()
        {
            return new PersonManager();
        }
		public IPersonManager GetPersonManager(INHibernateSession session)
        {
            return new PersonManager(session);
        }
		public IRegionManager GetRegionManager()
        {
            return new RegionManager();
        }
		public IRegionManager GetRegionManager(INHibernateSession session)
        {
            return new RegionManager(session);
        }
		public IReWineAwardManager GetReWineAwardManager()
        {
            return new ReWineAwardManager();
        }
		public IReWineAwardManager GetReWineAwardManager(INHibernateSession session)
        {
            return new ReWineAwardManager(session);
        }
		public IReWineColorManager GetReWineColorManager()
        {
            return new ReWineColorManager();
        }
		public IReWineColorManager GetReWineColorManager(INHibernateSession session)
        {
            return new ReWineColorManager(session);
        }
		public IReWineExpertManager GetReWineExpertManager()
        {
            return new ReWineExpertManager();
        }
		public IReWineExpertManager GetReWineExpertManager(INHibernateSession session)
        {
            return new ReWineExpertManager(session);
        }
		public IReWineFoodPairingManager GetReWineFoodPairingManager()
        {
            return new ReWineFoodPairingManager();
        }
		public IReWineFoodPairingManager GetReWineFoodPairingManager(INHibernateSession session)
        {
            return new ReWineFoodPairingManager(session);
        }
		public IReWineGrapeVarietyManager GetReWineGrapeVarietyManager()
        {
            return new ReWineGrapeVarietyManager();
        }
		public IReWineGrapeVarietyManager GetReWineGrapeVarietyManager(INHibernateSession session)
        {
            return new ReWineGrapeVarietyManager(session);
        }
		public IReWineIngredientManager GetReWineIngredientManager()
        {
            return new ReWineIngredientManager();
        }
		public IReWineIngredientManager GetReWineIngredientManager(INHibernateSession session)
        {
            return new ReWineIngredientManager(session);
        }
		public IReWineServingOcassionManager GetReWineServingOcassionManager()
        {
            return new ReWineServingOcassionManager();
        }
		public IReWineServingOcassionManager GetReWineServingOcassionManager(INHibernateSession session)
        {
            return new ReWineServingOcassionManager(session);
        }
		public IReWineSmellManager GetReWineSmellManager()
        {
            return new ReWineSmellManager();
        }
		public IReWineSmellManager GetReWineSmellManager(INHibernateSession session)
        {
            return new ReWineSmellManager(session);
        }
		public IReWineStyleManager GetReWineStyleManager()
        {
            return new ReWineStyleManager();
        }
		public IReWineStyleManager GetReWineStyleManager(INHibernateSession session)
        {
            return new ReWineStyleManager(session);
        }
		public IReWineTasteManager GetReWineTasteManager()
        {
            return new ReWineTasteManager();
        }
		public IReWineTasteManager GetReWineTasteManager(INHibernateSession session)
        {
            return new ReWineTasteManager(session);
        }
		public IWineManager GetWineManager()
        {
            return new WineManager();
        }
		public IWineManager GetWineManager(INHibernateSession session)
        {
            return new WineManager(session);
        }
		public IWineryManager GetWineryManager()
        {
            return new WineryManager();
        }
		public IWineryManager GetWineryManager(INHibernateSession session)
        {
            return new WineryManager(session);
        }
        
        #endregion
    }
}
